MAESTRO HOME — ретранслятор TEST

Публичного сервера студии пока нет. Этот исходный код позволяет подготовить свой сервер; он не подключается к облаку автоматически. Для публичной эксплуатации требуется отдельная проверка защиты и испытание в разных сетях.

Сервер не хранит файлы на диске: только ограниченные зашифрованные очереди в памяти до 60 секунд. Нужен постоянно доступный сервер, действительный HTTPS-сертификат и секретный ключ создания комнат. После перезапуска сервера комнаты исчезают; создайте группу заново. Не более 16 комнат, 8 МБ очередей на комнату, 16 участников в группе. Защита от повторов и лимиты запросов включены. Системный лимит потоков/соединений, мониторинг, обновления и защита от сетевого DoS требуют настройки сервера, это не готовая публичная облачная услуга.

Windows — тест на одной машине
Откройте консоль в папке активной версии. Копируйте команды по отдельности:
 runtime\python.exe -B -c "import secrets;from pathlib import Path;Path('relay-creation-key.txt').write_text(secrets.token_urlsafe(32))"
 runtime\python.exe -B home_net.py --creation-key-file relay-creation-key.txt
Сервер слушает только 127.0.0.1:18740. Не публикуйте созданный relay-creation-key.txt и не включайте его в ZIP.

Интернет
1. Разместите home_net.py на своём сервере. Python 3.12 + cryptography 50.0.2 (или отдельно протестированная совместимая версия). Права на ключ создания комнат — только для пользователя сервиса.
2. Запустите сервер на 127.0.0.1:18740 за HTTPS reverse proxy с вашим доменом и действительным сертификатом. Для Caddy конфигурация выглядит так:
   your-domain.example {
       reverse_proxy 127.0.0.1:18740
   }
Это пример, не согласованный домен. Reverse proxy должен ограничивать размер запроса до 800000 байт, время чтения, число соединений и запросов; не логируйте тела запросов или заголовки с секретами. Не включайте кэширование.
3. Откройте на сервере только HTTPS-порт reverse proxy. Не открывайте порт 18740 в интернет. Сам скрипт запрещает внешний plain-HTTP bind без TLS.
4. Альтернатива reverse proxy — home_net.py --bind 0.0.0.0 --port 443 --creation-key-file ... --cert fullchain.pem --key privkey.pem. Сертификат должен быть доверенным клиентами и соответствовать домену, самоподписанный сертификат автоматически не принимается.
5. В Maestro Home на вкладке «Интернет по коду» владелец вводит HTTPS-адрес и ключ создания комнат. Полученный MH1-код отправляет доверенным людям. Они вставляют его и запрашивают подключение. Владелец сверяет ключ каждого устройства и разрешает его.
Клиентам не нужны публичные IP, открытые SMB-порты или перенастройка роутера. На устройствах должны быть открыты исходящие HTTPS-соединения к вашему серверу. Интернет-провайдеры/корпоративные сети могут ограничивать их; реальная проверка в двух сетях ещё не выполнена.

Проверенные составляющие
Локальные тесты: три участника, подтверждение и исключение, передача >2 блоков и загрузка обратно, скрытые папки, запреты чтения/записи, подписи и адресаты, защита очередей от подмены, повторов, HTTPS с доверенным тестовым CA и отклонение недоверенного сертификата. Независимого аудита протокола не было.

Описание используемых библиотек:
https://cryptography.io/en/stable/hazmat/primitives/asymmetric/ed25519/
https://cryptography.io/en/stable/hazmat/primitives/asymmetric/x25519/
https://cryptography.io/en/stable/hazmat/primitives/aead/
https://docs.python.org/3.12/library/ssl.html
